#include <iostream>
#include <vector>
#include <string>
#include <functional>

typedef std::function<void()> func;    //包装器

std::vector<func> trace_back;
std::vector<std::string> desc;

void execuleUrl()  
{
    std::cout << "execuleUrl" << std::endl;
}

void visitSQL()
{
    std::cout << "visitSQL" << std::endl;
}

void save()
{
    std::cout << "save database" << std::endl;
}

void online()
{
    std::cout << "take online" << std::endl;
}

void Load()   //载入下标及对应函数地址
{
    trace_back.emplace_back(execuleUrl);
    desc.emplace_back("execuleUrl");

    trace_back.emplace_back(visitSQL);
    desc.emplace_back("visitSQL");

    trace_back.emplace_back(save);
    desc.emplace_back("save database");

    trace_back.emplace_back(online);
    desc.emplace_back("take online");
}

void show()   // 显示标号及与之对应的函数
{
    int count = 0;
    for(const auto& iter : desc)
    {
        std::cout << count++ << " : " << iter << std::endl;
    }
}

int handlerSize()  // 任务数
{
    return trace_back.size();
}